A glanceable command surface for AI coding agents — warm sand on deep ink, kelp greens for the calm signal, coral for the developer's edge.
Whites lean into sand, blacks lean into deep aquarium green. Pure neutrals are forbidden. Kelp signals "App Store / running / OK"; coral signals the developer tier; amber is the only color that pulses, and only when the agent is waiting on you.
The tokens above are for marketing / editorial surfaces. Inside the product itself — menubar, e-ink, terminal, hardware — we run a brighter signal palette so status reads at 16px on glossy OS chrome. Marketing must never use product brights.
IBM Plex Sans for everything human — including Korean and Japanese, via the Plex multi-script family. JetBrains Mono for everything the machine emits, plus all kickers, tier badges, timestamps and commands. No third face.
KO, EN and JA share one type system via the IBM Plex Sans family + KR + JP scripts. Korean copy uses ~해요 체 (relaxed but precise). Japanese uses です/ます. Mono kickers translate, tier badges do not.
Section vertical padding is 96px desktop, 64px mobile. Container max-width is 1240px with 32px gutters.
Mono badges hold a 4px radius for crispness; cards open up to 16–18px. The hero pill and lang switch use full pills.
All shadows tilt warm — they're built on the ink-900 hue, not pure neutral grey, so they sit naturally against the sand backgrounds.
Idle is silent. Processing is steady. Awaiting pulses amber. Error is solid coral. Anything outside this matrix is decoration and should be reconsidered.
| State | Dot | Color | Animation | Meaning |
|---|---|---|---|---|
| idle | --ink-300 | none | Session exists, nothing happening. | |
| processing | --kelp-500 | none — steady | Agent is actively working. | |
| awaiting | --amber-500 | pulse 1.1s | Agent needs YES/NO from you. | |
| error | --coral-500 | none | Failed run, attention required. |
Everything below is a class in design/components.css. Variants extend a base via BEM-ish modifiers (--primary, --ghost).
main.zig.All 24px viewbox, 1.6px stroke, currentColor. Live in design/icons.jsx. Build new icons in this system; never grab from a generic icon font.
The product mark is the AgentDeck aquarium icon — a full-color illustration that ships with the App Store build and lives in the Dock. The agent marks are the real brand SVGs of each upstream tool (Claude Code, Codex, OpenClaw, OpenCode), used wherever a session is identified. We do not redraw or stylize them; they keep their own brand color from data.js → AGENTS.
Source SVGs in design/brand/*.svg; tinted at runtime via currentColor in creatures.jsx. Brand colors come from data.js and are the only saturated reds/blues allowed in the system.
AgentDeck runs on real surfaces with real pixel grids. Treat each as a constraint to celebrate, not work around.
A short list of things that look like good ideas but break the system.
#fff or #000. Use --tide-50 and --ink-900.